#ifndef MEMORY_BRIDGE_OCK_HMM_DEVICE_INFO_CONF_H
#define MEMORY_BRIDGE_OCK_HMM_DEVICE_INFO_CONF_H
#include <cstdint>
#include <ostream>
#include "ock/hmm/mgr/OckHmmHeteroMemoryMgr.h"
#include "ock/conf/ParamRange.h"

namespace ock {
namespace conf {


struct OckHmmDeviceInfoConf
{
    OckHmmDeviceInfoConf(void);
    ParamRange<hmm::OckHmmDeviceId> deviceId;
    ParamRange<uint32_t> transferThreadNum;
    ParamRange<uint64_t> deviceBaseCapacity;
    ParamRange<uint32_t> deviceBufferCapacity;
    ParamRange<uint64_t> hostBaseCapacity;
    ParamRange<uint64_t> hostBufferCapacity;
};

bool operator==(const OckHmmDeviceInfoConf &lhs, const OckHmmDeviceInfoConf &rhs);
bool operator!=(const OckHmmDeviceInfoConf &lhs, const OckHmmDeviceInfoConf &rhs);
std::ostream &operator<<(std::ostream &os, const OckHmmDeviceInfoConf &conf);
}
}
#endif